#ifndef SMART_HOME_UI_H
#define SMART_HOME_UI_H

#include "lvgl/lvgl.h"
#include "mqtt_cloud.h"

/*====================
 * 外部图片资源声明
 *==================*/
// 窗帘动画图片
extern const lv_img_dsc_t open_cur;   // 窗帘打开状态
extern const lv_img_dsc_t close_cur;  // 窗帘关闭状态

// 温湿度图标
extern const lv_img_dsc_t temp;       // 温度图标
extern const lv_img_dsc_t humi;       // 湿度图标

// 设备图标
extern const lv_img_dsc_t LED;        // LED灯图标
extern const lv_img_dsc_t hvac;       // 空调图标

/*====================
 * 全局UI对象声明
 *==================*/
// 时间显示组件
extern lv_obj_t *time_label;
extern lv_obj_t *date_label;
extern lv_timer_t *timer_update;

// 环境信息显示组件
extern lv_obj_t *temperature_value_label;
extern lv_obj_t *humidity_value_label;

// 设备控制组件
extern lv_obj_t *light1_switch;      // 灯光1开关
extern lv_obj_t *light2_switch;      // 灯光2开关
extern lv_obj_t *ac_switch;          // 空调开关
extern lv_obj_t *curtain_slider;     // 窗帘控制滑块
extern lv_obj_t *curtain_label;      // 窗帘状态标签
extern lv_obj_t *curtain_image;      // 窗帘动画显示
extern lv_obj_t *curtain_auto_btn;   // 窗帘自动控制按钮
extern lv_obj_t *smoke_bar;          // 烟雾浓度进度条
extern lv_obj_t *smoke_label;        // 烟雾浓度标签
extern lv_obj_t *message_content;    // 消息内容标签

/*====================
 * 全局状态变量
 *==================*/
extern bool global_ac_power_state;   // 空调电源状态
extern int global_curtain_position;  // 窗帘位置 0-100
extern bool global_curtain_auto;     // 窗帘自动控制状态
extern bool global_light1_state;     // 灯光1状态
extern bool global_light2_state;     // 灯光2状态
extern bool global_light3_state;     // 灯光3状态
extern bool global_light4_state;     // 灯光4状态
extern int global_smoke_density;     // 烟雾浓度 0-100

/*====================
 * 工具函数声明
 *==================*/
extern void force_clear_screen_ghosting(void);  // 强制清屏

/*====================
 * 主要功能函数声明
 *==================*/
void create_smart_home_ui(void);     // 创建智能家居界面
void cleanup_smart_home_ui(void);    // 清理界面资源
void final_cleanup_smart_home_ui(void);  // 程序完全退出时的清理
void return_to_smart_home_ui(void);  // 安全返回智能家居界面
void sync_ac_power_state(bool new_state);  // 同步空调状态
bool get_ac_power_state(void);       // 获取空调状态
void set_smoke_density(int density); // 设置烟雾浓度
int get_smoke_density(void);         // 获取烟雾浓度
void update_system_message(const char *message); // 更新系统消息
void set_light3_state(bool state);   // 设置灯光3状态
void set_light4_state(bool state);   // 设置灯光4状态
bool get_light3_state(void);         // 获取灯光3状态
bool get_light4_state(void);         // 获取灯光4状态
void test_light_states(void);        // 测试和显示所有灯光状态
void toggle_light_for_test(int light_index); // 切换指定灯光状态用于测试
int get_current_temperature(void);   // 获取当前显示的温度值
int get_current_humidity(void);      // 获取当前显示的湿度值
void save_user_settings(void);       // 保存用户设置到文件
void load_user_settings(void);       // 从文件加载用户设置
void set_ac_temp_from_settings(int temperature);  // 从设置恢复空调温度
void set_ac_mode_from_settings(int mode);  // 从设置恢复空调模式

/*====================
 * MQTT云平台集成函数声明
 *==================*/
void init_mqtt_cloud_integration(void);  // 初始化MQTT云平台集成
void upload_all_device_data(void);       // 上传所有设备数据
void handle_mqtt_status_change(mqtt_status_t status);  // 处理MQTT状态变化
void handle_mqtt_command(const char* topic, const char* message);  // 处理云平台命令
void start_cloud_sync_timer(void);       // 启动云同步定时器
void stop_cloud_sync_timer(void);        // 停止云同步定时器

#endif /* SMART_HOME_UI_H */